import { AxiosResponse } from 'axios'
import instance from './index'
import { dataFormat } from '../util'
import {ItemStatus} from './items'
/**
 * 定义登录所需要的数据。
 */
export interface LoginForm {
  mobile: string
  password: string
}
/**
 * 定义注册操作所需要的数据，比登录多一个确认密码。
 */
export interface RegisterForm extends LoginForm {
  confirmPassword: string
}
/**
 * 定义登录和注册 API 接口的响应类型，主要包含 token 和用户信息。
 */
export interface AuthResponse {
  accessToken: string
  user: User
}
/**
 * 定义用户角色类型，分别为普通用户和管理员。
 */
export enum Role {
  USER = 'USER',
  ADMIN = 'ADMIN'
}

/**
 * 定义用户类型。
 */
export interface User {
  id: string
  mobile: string
  roles: Role[]
  createdAt: string
  updatedAt: string
  profile: {
    id: string
    createdAt: string
    updatedAt: string
    nickname: string
    avatar: string
    gender: string
  }
}

/**
 * 请求登录接口。
 *
 * @param data 手机号和密码
 * @returns 认证响应，包含 token 和用户信息
 */
export async function postLogin(
  data: LoginForm
): Promise<AxiosResponse<AuthResponse>> {
  return await instance.post('/auth/login', data)
}

/**
 * 请求注册接口。
 *
 * @param data 手机号和密码
 * @returns 认证响应，包含 token 和用户信息
 */

export async function postRegister(
  data: RegisterForm
): Promise<AxiosResponse<AuthResponse>> {
  return await instance.post('/auth/register', data)
}

/**
 * 获取当前用户信息。
 *
 * @returns 用户信息
 */
export async function getUserProfile(): Promise<AxiosResponse<User>> {
  return await instance.get('/me')
}

/**
 * 上传头像
 *
 */


export async function changeavatar(file: FormData): Promise<AxiosResponse<User>> {

  return await instance.post('/me/avatar', file)
}
/**
 * 上传用户信息
 */
export interface Usermsg {
  mobile: string
  profile: {
    nickname: string
    gender: string
  }
}
export async function updatedUserMsg(
  msg: Usermsg
): Promise<AxiosResponse<User>> {
  return await instance.patch('/me', msg)
}

/**
 * 获得发布的商品list
 * @param id
 * @returns
 */
 export interface ItemPublish {
  id: string
  name: string
  description?: string
  status: ItemStatus
  price: number
  originalPrice?: number
  updatedAt: Date
  createdAt: Date
}
export interface authItems {
  id:string,
  profile:{
    nickname:string,
    avatar:string,
    gender:string
  },
  items:ItemPublish[]
}
/**
 * 获取用户的商品
 * @param id
 * @returns
 */
 export async function getpublishItem(id:string): Promise<AxiosResponse<authItems>> {
  return await instance.get(`/users/${id}`)
}


export interface address {
  id:string,
  updatedAt: string,
  createdAt: string,
  recipient:string,
  contact:string,
  address:string,
  remark:string
}

export async function addAddress(address:{}): Promise<AxiosResponse<address>> {
  return await instance.post(`/me/addresses`,address)
}

export async function getAddress(): Promise<AxiosResponse<address[]>> {
  return await instance.get(`/me/addresses`)
}
export async function editAddress(id:string,address:{}): Promise<AxiosResponse<address>> {
  return await instance.patch(`/me/addresses/${id}`,address)
}
export async function deleteAddress(id:string): Promise<AxiosResponse<address>> {
  return await instance.delete(`/me/addresses/${id}`)
}



export async function createNeworder(idar:{}){
  return await instance.post(`/orders`,idar)
}
export async function getAllorder(){
  return await instance.get(`/orders`)
}
export async function getorderdetails(id:string){
  return await instance.get(`/orders/${id}`)
}
